/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"CAE0AD57-471A-483F-9676-BA6E88A431CF"}
 */
var $texto = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"7498F21F-152B-4050-9C73-A69909DA9F45",variableType:93}
 */
var fFechaHasta = null;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"B49209D8-F8C4-4301-A145-E1BD19CC0A34"}
 * @AllowToRunInFind
 */
function continuar(event) {
	
	elements.errores.removeAllTabs()
	var res = globals.chequeaVariables()
	if (res[0] == 1)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Error en variables globales : '+res[1],'OK')
		return
	}
	
	var $tipo_asiento = 3
	if (globals.control_asientos_prov($tipo_asiento,globals.gMesAsientos,globals.gAnioAsientos) == 0 )
	{
		return
	}
	
	var $cols		= ['fecha','documento','error']
	/** @type {JSFoundSet<db:/contable/asiento_prov_cab>}*/
	var $provisorio = databaseManager.getFoundSet('contable','asiento_prov_cab')
	/** @type {JSFoundSet<db:/infocom/ctacte_pr>}*/
	var $cta_cte 	= databaseManager.getFoundSet('infocom','ctacte_pr')
	var $errores 	= databaseManager.createEmptyDataSet( 0, $cols )
	
	if($cta_cte.find()== false)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error al buscar movimientos','OK')
		return
	}
	
	var $fecha_desde 	= new Date(globals.gAnioAsientos, globals.gMesAsientos-1,1,0,0,0,0)
	var $fecha_hasta 	= new Date(globals.gAnioAsientos, globals.gMesAsientos,0,23,59,59,996)
	var rango 			= utils.dateFormat($fecha_desde,'dd-MM-yyyy') + '...'+ utils.dateFormat($fecha_hasta,'dd-MM-yyyy')
	$cta_cte.fecha_mov 	= '#' + rango + '|dd-MM-yyyy'
	
	$cta_cte.ctacte_pr_to_tab_mov_pr.tipo_asiento_id = $tipo_asiento
	
	if ($cta_cte.search() == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','No se encontraron movimientos con esas condiciones','OK')
		return
	}
	databaseManager.setAutoSave(false)	
	var $cant = databaseManager.getFoundSetCount($cta_cte)

	for (var i = 1 ; i <= $cant ; i++)
	{
		var $rcd = $cta_cte.getRecord(i)
		 
		if ($rcd.ctacte_pr_to_ord_servicio_numeradas_copia.getSize() == 1) 
		{	
			if ($rcd.importe != 0) // no generar cabecera en cero sin detalle
			{
				tipoAsiento_3($rcd , $provisorio,$errores, $tipo_asiento)
			}
		}
		else
		{
			var error = new Array(utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy'), 'Ord - '+ $rcd.letra + '-'+$rcd.sucursal+'-'+$rcd.nro_factura+' - '+$rcd.concepto, 'Error en relacion entre cta cte y orden de servicio')
			$errores.addRow(error)
		}
	}
	if ($errores.getMaxRowIndex() > 0)
	{
		var $fecha_hoy 	= utils.dateFormat(new Date(),'dd-MM-yyyy')
		var $periodo	= 'Desde ' + utils.dateFormat($fecha_desde,'dd-MM-yyyy') + ' hasta '  + utils.dateFormat($fecha_hasta,'dd-MM-yyyy')
		var $titulo		= 'Asiento Ord. Servicio - ' + $periodo + ' - Fecha Proceso ' + $fecha_hoy
		globals.crearFormErrores('asiento_orden_servicio_3',$errores,$cols,$titulo)
	}
	databaseManager.startTransaction()
	if (databaseManager.saveData()) 
	{
		databaseManager.setAutoSave(true)
		databaseManager.commitTransaction()
	}
	else
	{
		databaseManager.rollbackTransaction()
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error al intentar grabar los cambios. El proceso está incompleto','OK')
	}
}

/**
 * @param {JSRecord<db:/infocom/ctacte_pr>} $rcd
 * @param {JSFoundSet<db:/contable/asiento_prov_cab>} $provisorio
 * @param {JSDataSet} $errores
 * @param {Number} $tipo_asiento
 * @properties={typeid:24,uuid:"53E37CD2-9DFF-4E20-93D7-A9165B1144D2"}
 */
function tipoAsiento_3($rcd , $provisorio,$errores, $tipo_asiento)
{
	$provisorio.newRecord()
	
 	$provisorio.moneda 				= 'P'
	$provisorio.moneda_carga 		= 1
	$provisorio.hizo 				= globals.gUsuarioID
	$provisorio.tipo_actualizacion 	= globals.z_conf_asiento_normal
	$provisorio.empresa				= globals.gUservID
	$provisorio.fecha 				= $rcd.fecha_mov
	$provisorio.texto 				= $rcd.concepto
	$provisorio.subdiario_id 		= 4     // egresos
	$provisorio.mes					= $rcd.fecha_mov.getMonth()+1
	$provisorio.anio				= $rcd.fecha_mov.getFullYear()
	$provisorio.tipo_asiento_id 	= $tipo_asiento	
	$provisorio.total				= $rcd.importe

	var letra 
	var contra
	var error
	//Doy de alta los 2 renglones
	if ($rcd.ctacte_pr_to_tab_mov_pr.d_h == 1)
	{
		letra 	= 'H'
		contra 	= 'D'
	}
	else
	{
		letra 	= 'D'
		contra 	= 'H'
	}
	
	var det = $provisorio.asiento_prov_cab_to_asiento_prov
	$texto='Ord - '+ $rcd.letra + '-'+$rcd.sucursal+'-'+$rcd.nro_factura+' - '+$rcd.concepto
	det.newRecord()
	
	det.columna 	= letra
	det.cuentas_id = 999999
	if ($rcd.ctacte_pr_to_ord_servicio_numeradas_copia.ord_servicio_numeradas_to_proveedores_rel_ord_servicio.proveedores_rel_ord_servicio_to_proveedor) // 30/05/2012
	{
		if ($rcd.ctacte_pr_to_ord_servicio_numeradas_copia.ord_servicio_numeradas_to_proveedores_rel_ord_servicio.proveedores_rel_ord_servicio_to_proveedor.plancta_id != null) 
			det.cuentas_id = $rcd.ctacte_pr_to_ord_servicio_numeradas_copia.ord_servicio_numeradas_to_proveedores_rel_ord_servicio.proveedores_rel_ord_servicio_to_proveedor.plancta_id
		else 
		{
			error = new Array(utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy'), $texto, 'Proveedor rel. no tiene cuenta cargada')
			$errores.addRow(error)
		}
	}
	else  // error en relacion  
	{
		error = new Array(utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy'), $texto, 'Error en relacion entre cta cte, ord. servicio y  proveedor rel.')
		$errores.addRow(error)
	}
	det.importe 	= $rcd.importe
	det.numero		= 0  //$provisorio.numero  
	det.empresa		= globals.gUservID
	det.centro		= 1
	det.division	= 1
	det.leyenda		= ''
	det.mes			= $provisorio.mes
	det.anio		= $provisorio.anio
		
	det.newRecord()
	
	det.columna    = contra
	det.cuentas_id = 999999
	if ($rcd.ctacte_pr_to_proveedor) 
	{
		if ($rcd.ctacte_pr_to_proveedor.plancta_id != null)  		
		{
			det.cuentas_id	= $rcd.ctacte_pr_to_proveedor.plancta_id
		}
		else 
		{
			error = new Array(utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy'), $texto, 'Proveedor ' + $rcd.ctacte_pr_to_proveedor.razon_social + ' Cuenta plancta_id no cargada')
			$errores.addRow(error)
		}	
	}
	else
	{
		error = new Array(utils.dateFormat($rcd.fecha_mov,'dd-MM-yyyy'), $texto, 'Error en relacion entre ctacte_pr y proveedor')
		$errores.addRow(error)
	}
	det.importe 	= $rcd.importe
	det.numero		= 0  //$provisorio.numero  
	det.empresa		= globals.gUservID
	det.centro		= 1
	det.division	= 1
	det.leyenda		= ''
	det.mes			= $provisorio.mes
	det.anio		= $provisorio.anio
}
